46 #include "stm32f429i_discovery_lcd.h"
47 #include "stm32f4xx_hal.h"
48 #include "stm32f429i_discovery.h"
51 #define POWERUP_CAL_NUM 200
52 #define FACOTRY_CAL_NUM 200
54 #define MAJORVERSION 3
55 #define MINORVERSION 5
59 static FLASH_EraseInitTypeDef EraseInitStruct;
61 static void ErrorHandler(
void);
66 GUI_RECT
Rect = {0, 0, 320, 240};
119 GUI_SetFont(&GUI_Font8x16);
158 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
161 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
166 if(HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_13) == GPIO_PIN_RESET)
169 BSP_LED_Toggle(LED3);
183 GUI_ClearRect(0, 0, 240, 240);
184 GUI_FillCircle(
x,
y,
r);
186 GUI_ClearRect(0, 0, 240, 240);
190 sprintf(string5,
"Smart Force Sensor\nLoad1=%6.1f g Load4=%6.1f g\nLoad2=%6.1f g Load3=%6.1f g\nTotal Load=%6.1f g",
198 GUI_SetTextMode(GUI_TM_XOR);
199 GUI_FillRectEx(&
Rect);
201 GUI_DispStringInRectEx(string5, &
Rect, GUI_TA_HCENTER | GUI_TA_VCENTER, strlen(string5), GUI_ROTATE_CW);
264 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_RESET)
267 char string[] =
"Factory Calibration!\n\n\
269 Factory Calibrator\n\n\
273 Otherwise, Hold On\n\n\
281 GUI_SetTextMode(GUI_TM_XOR);
282 GUI_FillRectEx(&
Rect);
283 GUI_DispStringInRectEx(
string, &
Rect, GUI_TA_HCENTER | GUI_TA_VCENTER, strlen(
string), GUI_ROTATE_CW);
286 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) != GPIO_PIN_SET)
291 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET)
322 EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;
323 EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;
324 EraseInitStruct.Sector = FLASH_SECTOR_12;
325 EraseInitStruct.NbSectors = 1;
326 if(HAL_FLASHEx_Erase(&EraseInitStruct, &
SectorError) != HAL_OK)
329 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100000, cell0Load0Sign) != HAL_OK)
331 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100008, cell1Load0Sign) != HAL_OK)
333 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100010, cell2Load0Sign) != HAL_OK)
335 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100018, cell3Load0Sign) != HAL_OK)
337 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100020, cell0Load700Sign) != HAL_OK)
339 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100028, cell1Load700Sign) != HAL_OK)
341 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100030, cell2Load700Sign) != HAL_OK)
343 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100038, cell3Load700Sign) != HAL_OK)
345 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100004,
cell0Load0Int) != HAL_OK)
347 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x0810000C,
cell1Load0Int) != HAL_OK)
349 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100014,
cell2Load0Int) != HAL_OK)
351 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x0810001C,
cell3Load0Int) != HAL_OK)
353 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100024,
cell0Load700Int) != HAL_OK)
355 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x0810002C,
cell1Load700Int) != HAL_OK)
357 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08100034,
cell2Load700Int) != HAL_OK)
359 if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x0810003C,
cell3Load700Int) != HAL_OK)
373 GPIO_InitTypeDef GPIO_InitStructure;
374 GPIO_InitStructure.Pin = GPIO_PIN_14;
375 GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
376 GPIO_InitStructure.Pull = GPIO_NOPULL;
377 GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
378 HAL_GPIO_Init(GPIOG, &GPIO_InitStructure);
380 HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_RESET);
382 HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_SET);
385 GPIO_InitStructure.Pin = GPIO_PIN_13;
386 GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
387 GPIO_InitStructure.Pull = GPIO_PULLUP;
388 GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
389 HAL_GPIO_Init(GPIOG, &GPIO_InitStructure);
392 GPIO_InitStructure.Pin = GPIO_PIN_15;
393 GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
394 GPIO_InitStructure.Pull = GPIO_NOPULL;
395 GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
396 HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
399 GPIO_InitStructure.Pin = GPIO_PIN_8;
400 GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
401 GPIO_InitStructure.Pull = GPIO_PULLUP;
402 GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
403 HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
411 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
415 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
418 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
423 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
426 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
430 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
433 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
439 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
442 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
448 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
451 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
457 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
461 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
466 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
473 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
475 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
482 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
484 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
491 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
493 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
500 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
502 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
513 char string00[] =
"Powerup Calibration:\n\n\n\n\n\
514 Remove Everything\n\n\
517 On A Flat Surface\n\n\n\
518 Press SW2 When Ready";
520 char string01[] =
"Powerup Calibration:\n\n\n\n\n\
521 Remove Everything\n\n\
524 On A Flat Surface\n\n\n\
525 Do Not Touch The Board";
527 char string10[] =
"Factory 0 Load Calibration:\n\n\n\n\n\
528 Remove Everything\n\n\
529 On The Sensors\n\n\n\
531 On A Flat Surface\n\n\n\
532 Press SW2 When Ready";
534 char string11[] =
"Factory 0 Load Calibration:\n\n\n\n\n\
535 Remove Everything\n\n\
536 On The Sensors\n\n\n\
538 On A Flat Surface\n\n\n\
539 Do Not Touch The Board";
541 char string20[] =
"Factory 700g Load Calibration:\n\n\n\n\n\
542 Place 700 gram Weight\n\n\
543 On The Load Cell --1--\n\n\n\
545 On A Flat Surface\n\n\n\
546 Press SW2 When Ready";
548 char string21[] =
"Factory 700g Load Calibration:\n\n\n\n\n\
549 Place 700 gram Weight\n\n\
550 On The Load Cell --1--\n\n\n\
552 On A Flat Surface\n\n\n\
553 Do Not Touch The Board";
555 char string30[] =
"Factory 700g Load Calibration:\n\n\n\n\n\
556 Place 700 gram Weight\n\n\
557 On The Load Cell --2--\n\n\n\
559 On A Flat Surface\n\n\n\
560 Press SW2 When Ready";
562 char string31[] =
"Factory 700g Load Calibration:\n\n\n\n\n\
563 Place 700 gram Weight\n\n\
564 On The Load Cell --2--\n\n\n\
566 On A Flat Surface\n\n\n\
567 Do Not Touch The Board";
569 char string40[] =
"Factory 700g Load Calibration:\n\n\n\n\n\
570 Place 700 gram Weight\n\n\
571 On The Load Cell --3--\n\n\n\
573 On A Flat Surface\n\n\n\
574 Press SW2 When Ready";
576 char string41[] =
"Factory 700g Load Calibration:\n\n\n\n\n\
577 Place 700 gram Weight\n\n\
578 On The Load Cell --3--\n\n\n\
580 On A Flat Surface\n\n\n\
581 Do Not Touch The Board";
583 char string50[] =
"Factory 700g Load Calibration:\n\n\n\n\n\
584 Place 700 gram Weight\n\n\
585 On The Load Cell --4--\n\n\n\
587 On A Flat Surface\n\n\n\
588 Press SW2 When Ready";
590 char string51[] =
"Factory 700g Load Calibration:\n\n\n\n\n\
591 Place 700 gram Weight\n\n\
592 On The Load Cell --4--\n\n\n\
594 On A Flat Surface\n\n\n\
595 Do Not Touch The Board";
597 char *string0, *string1;
633 GUI_SetTextMode(GUI_TM_XOR);
634 GUI_FillRectEx(&
Rect);
635 GUI_DispStringInRectEx(string0, &
Rect, GUI_TA_HCENTER | GUI_TA_VCENTER, strlen(string0), GUI_ROTATE_CW);
640 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_RESET)
644 GUI_SetTextMode(GUI_TM_XOR);
645 GUI_FillRectEx(&
Rect);
646 GUI_DispStringInRectEx(string1, &
Rect, GUI_TA_HCENTER | GUI_TA_VCENTER, strlen(string1), GUI_ROTATE_CW);
651 double cell0Total = 0, cell1Total = 0, cell2Total = 0, cell3Total = 0;
652 for(loop = 0; loop < conversions; loop++)
655 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
658 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
663 if(HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_13) == GPIO_PIN_RESET)
666 BSP_LED_Toggle(LED3);
707 static void ErrorHandler(
void)
712 BSP_LED_Toggle(LED2);